using SoulsFormats;
using System.Collections.Generic;
using System.Numerics;

namespace HKX2
{
    public partial class hkpShapeKeyTableBlock : IHavokObject
    {
        public virtual uint Signature { get => 846627727; }
        
        public uint m_slots_0;
        public uint m_slots_1;
        public uint m_slots_2;
        public uint m_slots_3;
        public uint m_slots_4;
        public uint m_slots_5;
        public uint m_slots_6;
        public uint m_slots_7;
        public uint m_slots_8;
        public uint m_slots_9;
        public uint m_slots_10;
        public uint m_slots_11;
        public uint m_slots_12;
        public uint m_slots_13;
        public uint m_slots_14;
        public uint m_slots_15;
        public uint m_slots_16;
        public uint m_slots_17;
        public uint m_slots_18;
        public uint m_slots_19;
        public uint m_slots_20;
        public uint m_slots_21;
        public uint m_slots_22;
        public uint m_slots_23;
        public uint m_slots_24;
        public uint m_slots_25;
        public uint m_slots_26;
        public uint m_slots_27;
        public uint m_slots_28;
        public uint m_slots_29;
        public uint m_slots_30;
        public uint m_slots_31;
        public uint m_slots_32;
        public uint m_slots_33;
        public uint m_slots_34;
        public uint m_slots_35;
        public uint m_slots_36;
        public uint m_slots_37;
        public uint m_slots_38;
        public uint m_slots_39;
        public uint m_slots_40;
        public uint m_slots_41;
        public uint m_slots_42;
        public uint m_slots_43;
        public uint m_slots_44;
        public uint m_slots_45;
        public uint m_slots_46;
        public uint m_slots_47;
        public uint m_slots_48;
        public uint m_slots_49;
        public uint m_slots_50;
        public uint m_slots_51;
        public uint m_slots_52;
        public uint m_slots_53;
        public uint m_slots_54;
        public uint m_slots_55;
        public uint m_slots_56;
        public uint m_slots_57;
        public uint m_slots_58;
        public uint m_slots_59;
        public uint m_slots_60;
        public uint m_slots_61;
        public uint m_slots_62;
        public hkpShapeKeyTableBlock m_next;
        
        public virtual void Read(PackFileDeserializer des, BinaryReaderEx br)
        {
            m_slots_0 = br.ReadUInt32();
            m_slots_1 = br.ReadUInt32();
            m_slots_2 = br.ReadUInt32();
            m_slots_3 = br.ReadUInt32();
            m_slots_4 = br.ReadUInt32();
            m_slots_5 = br.ReadUInt32();
            m_slots_6 = br.ReadUInt32();
            m_slots_7 = br.ReadUInt32();
            m_slots_8 = br.ReadUInt32();
            m_slots_9 = br.ReadUInt32();
            m_slots_10 = br.ReadUInt32();
            m_slots_11 = br.ReadUInt32();
            m_slots_12 = br.ReadUInt32();
            m_slots_13 = br.ReadUInt32();
            m_slots_14 = br.ReadUInt32();
            m_slots_15 = br.ReadUInt32();
            m_slots_16 = br.ReadUInt32();
            m_slots_17 = br.ReadUInt32();
            m_slots_18 = br.ReadUInt32();
            m_slots_19 = br.ReadUInt32();
            m_slots_20 = br.ReadUInt32();
            m_slots_21 = br.ReadUInt32();
            m_slots_22 = br.ReadUInt32();
            m_slots_23 = br.ReadUInt32();
            m_slots_24 = br.ReadUInt32();
            m_slots_25 = br.ReadUInt32();
            m_slots_26 = br.ReadUInt32();
            m_slots_27 = br.ReadUInt32();
            m_slots_28 = br.ReadUInt32();
            m_slots_29 = br.ReadUInt32();
            m_slots_30 = br.ReadUInt32();
            m_slots_31 = br.ReadUInt32();
            m_slots_32 = br.ReadUInt32();
            m_slots_33 = br.ReadUInt32();
            m_slots_34 = br.ReadUInt32();
            m_slots_35 = br.ReadUInt32();
            m_slots_36 = br.ReadUInt32();
            m_slots_37 = br.ReadUInt32();
            m_slots_38 = br.ReadUInt32();
            m_slots_39 = br.ReadUInt32();
            m_slots_40 = br.ReadUInt32();
            m_slots_41 = br.ReadUInt32();
            m_slots_42 = br.ReadUInt32();
            m_slots_43 = br.ReadUInt32();
            m_slots_44 = br.ReadUInt32();
            m_slots_45 = br.ReadUInt32();
            m_slots_46 = br.ReadUInt32();
            m_slots_47 = br.ReadUInt32();
            m_slots_48 = br.ReadUInt32();
            m_slots_49 = br.ReadUInt32();
            m_slots_50 = br.ReadUInt32();
            m_slots_51 = br.ReadUInt32();
            m_slots_52 = br.ReadUInt32();
            m_slots_53 = br.ReadUInt32();
            m_slots_54 = br.ReadUInt32();
            m_slots_55 = br.ReadUInt32();
            m_slots_56 = br.ReadUInt32();
            m_slots_57 = br.ReadUInt32();
            m_slots_58 = br.ReadUInt32();
            m_slots_59 = br.ReadUInt32();
            m_slots_60 = br.ReadUInt32();
            m_slots_61 = br.ReadUInt32();
            m_slots_62 = br.ReadUInt32();
            br.ReadUInt32();
            m_next = des.ReadClassPointer<hkpShapeKeyTableBlock>(br);
            br.ReadUInt64();
        }
        
        public virtual void Write(PackFileSerializer s, BinaryWriterEx bw)
        {
            bw.WriteUInt32(m_slots_0);
            bw.WriteUInt32(m_slots_1);
            bw.WriteUInt32(m_slots_2);
            bw.WriteUInt32(m_slots_3);
            bw.WriteUInt32(m_slots_4);
            bw.WriteUInt32(m_slots_5);
            bw.WriteUInt32(m_slots_6);
            bw.WriteUInt32(m_slots_7);
            bw.WriteUInt32(m_slots_8);
            bw.WriteUInt32(m_slots_9);
            bw.WriteUInt32(m_slots_10);
            bw.WriteUInt32(m_slots_11);
            bw.WriteUInt32(m_slots_12);
            bw.WriteUInt32(m_slots_13);
            bw.WriteUInt32(m_slots_14);
            bw.WriteUInt32(m_slots_15);
            bw.WriteUInt32(m_slots_16);
            bw.WriteUInt32(m_slots_17);
            bw.WriteUInt32(m_slots_18);
            bw.WriteUInt32(m_slots_19);
            bw.WriteUInt32(m_slots_20);
            bw.WriteUInt32(m_slots_21);
            bw.WriteUInt32(m_slots_22);
            bw.WriteUInt32(m_slots_23);
            bw.WriteUInt32(m_slots_24);
            bw.WriteUInt32(m_slots_25);
            bw.WriteUInt32(m_slots_26);
            bw.WriteUInt32(m_slots_27);
            bw.WriteUInt32(m_slots_28);
            bw.WriteUInt32(m_slots_29);
            bw.WriteUInt32(m_slots_30);
            bw.WriteUInt32(m_slots_31);
            bw.WriteUInt32(m_slots_32);
            bw.WriteUInt32(m_slots_33);
            bw.WriteUInt32(m_slots_34);
            bw.WriteUInt32(m_slots_35);
            bw.WriteUInt32(m_slots_36);
            bw.WriteUInt32(m_slots_37);
            bw.WriteUInt32(m_slots_38);
            bw.WriteUInt32(m_slots_39);
            bw.WriteUInt32(m_slots_40);
            bw.WriteUInt32(m_slots_41);
            bw.WriteUInt32(m_slots_42);
            bw.WriteUInt32(m_slots_43);
            bw.WriteUInt32(m_slots_44);
            bw.WriteUInt32(m_slots_45);
            bw.WriteUInt32(m_slots_46);
            bw.WriteUInt32(m_slots_47);
            bw.WriteUInt32(m_slots_48);
            bw.WriteUInt32(m_slots_49);
            bw.WriteUInt32(m_slots_50);
            bw.WriteUInt32(m_slots_51);
            bw.WriteUInt32(m_slots_52);
            bw.WriteUInt32(m_slots_53);
            bw.WriteUInt32(m_slots_54);
            bw.WriteUInt32(m_slots_55);
            bw.WriteUInt32(m_slots_56);
            bw.WriteUInt32(m_slots_57);
            bw.WriteUInt32(m_slots_58);
            bw.WriteUInt32(m_slots_59);
            bw.WriteUInt32(m_slots_60);
            bw.WriteUInt32(m_slots_61);
            bw.WriteUInt32(m_slots_62);
            bw.WriteUInt32(0);
            s.WriteClassPointer<hkpShapeKeyTableBlock>(bw, m_next);
            bw.WriteUInt64(0);
        }
    }
}
